什么是云函数 URL 化
云函数/云对象 URL 化是 uniCloud 的一项重要功能,允许通过标准 HTTP URL 直接访问云函数或云对象方法。这意味着外部系统(非 uni-app 项目)也能调用 uniCloud 的接口能力。
应用场景
- 支付回调:微信支付需要回调服务器地址,云函数 URL 化后可以直接作为回调地址
- 跨系统调用:已有 Vue3 + Node.js 项目需要使用 uniCloud 的短信发送等功能,通过 HTTP 接口调用
- 第三方集成:为外部系统提供 API 接口
配置 URL 路径
在 DCloud 云端控制台中:
- 进入云服务空间 → 云函数/云对象
- 找到目标云对象(如
say-hello)→ 点击详情 - 在"设置 URL 路径"中配置路径别名(如
/tomark) - 路径别名不必与函数名一致
URL 规则:
https://your-space.api.aliyun.com/tomark/say-hello/c
云空间域名 / 路径别名 / 云对象名 / 方法名
text
请求参数获取
GET 请求参数
GET 请求的 query 参数通过 params 直接获取:
// 云对象 say-hello
module.exports = {
async c() {
// params 包含 query 参数
return this.params
}
}
javascript
请求示例:
GET https://xxx.api.aliyun.com/tomark/say-hello/c?a=1&b=2
text
返回:
{
"params": { "a": "1", "b": "2" }
}
json
POST 请求参数
POST 请求的 body 参数需要通过 this.getHttpInfo() 获取:
module.exports = {
async c() {
const httpInfo = this.getHttpInfo()
// httpInfo.body 是 JSON 字符串,需要手动解析
const bodyObj = JSON.parse(httpInfo.body)
return bodyObj
}
}
javascript
使用 Bruno 或 Postman 发送 POST 请求测试:
POST https://xxx.api.aliyun.com/tomark/say-hello/c
Content-Type: application/json
{
"name": "test",
"value": 123
}
text
this.getHttpInfo() 返回的对象包含大量请求信息,其中 body 字段是经过 JSON.stringify 处理的字符串,需要 JSON.parse 解析后使用。
返回值类型
URL 化的云函数支持返回多种内容类型:
| 类型 | 返回方式 |
|---|---|
| JSON 对象 | 直接 return 对象 |
| HTML 字符串 | return '<h1>Hello</h1>' |
| JS 脚本 | 返回 JavaScript 代码字符串 |
| 二进制文件 | Buffer 格式返回 |
请求体大小限制
不同云服务商对请求体的大小有限制:
| 云服务商 | 限制 |
|---|---|
| 阿里云 | 约 5MB |
| 腾讯云 | 约 5MB |
对于大文件(如图片、视频)上传,不建议通过 URL 化的云函数处理,应使用 uniCloud 内置的云存储文件上传 API。云函数更适合处理结构化数据和业务逻辑。
安全性注意事项
URL 化后的接口地址是公开的 HTTPS 链接,任何知道该 URL 的人都可以发起请求。因此需要配合安全机制(如 uni-cloud-s2s)来保护接口。下一节将详细介绍安全通信的配置方法。
↑